home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 031-040 / amok38 / hotprog / hotprogz.zoo / HotProg / UserLib.mod < prev    next >
Text File  |  1990-03-14  |  1KB  |  54 lines

  1. IMPLEMENTATION MODULE UserLib;
  2.  
  3. FROM Intuition   IMPORT ScreenPtr;
  4. FROM SYSTEM      IMPORT ADDRESS;
  5.  
  6. PROCEDURE GetDiff(color0,color1 : INTEGER) : INTEGER;
  7.  
  8. VAR diff,red0,green0,blue0,red1,green1,blue1    : INTEGER;
  9.  
  10. BEGIN
  11.     red0    := color0 DIV 256;
  12.     red1    := color1 DIV 256;
  13.     green0  := (color0-red0*256) DIV 16;
  14.     green1  := (color1-red1*256) DIV 16;
  15.     blue0   := (color0-red0*256-green0*16);
  16.     blue1   := (color1-red1*256-green1*16);
  17.     diff    := (red0-red1+1)*(green0-green1+1)*(blue0-blue1+1);
  18.     IF diff < 0 THEN diff    := diff*(-1) END;
  19.     RETURN diff;
  20. END GetDiff;
  21.  
  22. PROCEDURE GetComplementColors(screenPtr : ScreenPtr;VAR col0,col1 : INTEGER);
  23.  
  24. VAR max,lastCol,diff,i,a    : INTEGER;
  25.     colorTable  : ADDRESS;
  26.     colors      : ARRAY[0..31] OF INTEGER;
  27.     colorPtr    : POINTER TO INTEGER;
  28.  
  29. BEGIN
  30.     max := 0;
  31.     IF col1 >31 THEN col1 :=31 END;
  32.     IF col0 >31 THEN col0 :=31 END;
  33.     colorTable  := screenPtr^.viewPort.colorMap^.colorTable;
  34.     lastCol := col1;
  35.     FOR i := 0 TO lastCol DO
  36.         colorPtr    := colorTable;
  37.         colors[i]   := colorPtr^;
  38.         INC(colorTable,2);
  39.     END;
  40.     FOR a := col0 TO lastCol-1 DO
  41.         FOR i := a TO lastCol DO
  42.             diff := GetDiff(colors[a],colors[i]);
  43.             IF diff > max THEN
  44.                 col0:= a;
  45.                 col1:= i;
  46.                 max := diff;
  47.             END;
  48.         END;
  49.     END;
  50.  
  51. END GetComplementColors;
  52.  
  53. END UserLib.
  54.